﻿using System;
using System.Data;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using MonitoringServer.MonitoringServiceReference;

namespace MonitoringServer
{
  public class PhotoHandler : IHttpHandler
  {
    public PhotoHandler()
    {
    }
    /// <summary>
    /// Реализуем свойство IsReusable, указывающее на то, может ли наш класс вызываться без повторной инициализации
    /// </summary>
    bool IHttpHandler.IsReusable
    {
      get { return true; }
    }
		void IHttpHandler.ProcessRequest(HttpContext context)
		{

      //Получаем ссылки на объекты Request и Response запроса.
			HttpRequest Request = context.Request;
			HttpResponse Response = context.Response;

      byte[] image = GetImage(Request, Int32.Parse(Request.QueryString["ID"]), Request.QueryString["Login"], Request.QueryString["Password"]);
		  //Устанавливаем правильный ContentType
			Response.ContentType = "image/jpeg";

      //И пишем содержимое картинки клиенту.
			Response.OutputStream.Write(image, 0, image.Length);
			Response.End();
		}

    private byte[] GetImage(HttpRequest Request, int id, string login, string password)
    {
      //Получаем картинку по ее уникальному идентификатору
      MonitoringClient monitoringClient = new  MonitoringClient();
      byte[] image = monitoringClient.GetEntityPhoto(login,password,id);
      if (image.Length == 0)
        image = GetEmptyImage();
      return image;
    }

    private static byte[] GetEmptyImage()
    {
      string imagePath = HttpContext.Current.Server.MapPath("Images//noname.gif");
      return File.ReadAllBytes(imagePath);
    }
  }
}
